# 定义函数
# def stu_info(gender="男",name, age): # 缺省值参数必须放在其他参数的末尾，否则直接报错
# def stu_info(name, age, gender="男"):
#     # 打印学生基本信息
#     print(f"{name}的年龄是：{age}，性别是：{gender}")
#
# stu_info("张三",18,"女")
# stu_info(19,"王五", "女")
# stu_info(age=19, name="王五", gender="女")

# 应用场景: 定义函数处理的参数个数不确定,需要用多值参数
# 定义多值参数的函数
def func(*args):
    print(args)
    # args的结果是一个元组类型的数据



# # 需求:
# # 1. 定义一个函数 sum_numbers，可以接收的 任意多个整数
# # 2. 功能要求：将传递的 所有数字累加 并且返回累加结果
# # 分析：
# # 1.定义函数（有参数，并且个数不确定）
# def sum_numbers(*args):
#     # 一个变量args接收了一堆数据（元组类型数据）如：args = (1,2,3,4,5)
#     # 定义初始结果变量
#     result = 0
#     # 先取出元素
#     for i in args:
#         print(i)
#         # 在累加求和
#         result += i
#     # 返回结果
#     return f"累加的结果是：{result}"
# # 2.调用函数
# aa = sum_numbers(1,2,3,4,5,6)
# print(aa)



#元组拆包
# 分析：
# 1.定义函数（有参数，并且个数不确定）
def sum_numbers(*args):
    """
    累计求和返回结果
    :param args: 多个参数
    :return: 返回计算结果
    """
    # 多值参数的结果元组，所有数据累计求和：对于元组里面所有元素累计求和
    # 元组元素取出来，然后分别累计求和
    result = 0
    for i in args:
        result += i # result = result + i
    return result
num = (1, 2, 3, 4, 5) # 定义一个元组
print(sum_numbers(*num)) # 将整个元组作为实参传递时，需要先拆包再传递